package com.hhkj.admin.student.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BizBaseEntity;
import com.ruoyi.common.valid.VEdit;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 学员课程信息关联对象 t_student_course
 *
 * @author ruoyi
 * @since 2023-05-17
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_student_course")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class StudentCourse extends BizBaseEntity {
    private static final long serialVersionUID = 1L;

    /** 学员id，关联t_student表主键 */
    @Excel(name = "学员id，关联t_student表主键")
    private Long studentId;

    /** 考试科目，关联t_course表主键 */
    @Excel(name = "考试科目，关联t_course表主键")
    private Long courseId;

    /** 课程名称 */
    @TableField(exist = false)
    private String courseName;

    /** 批次id,关联t_student_batch表主键 */
    @Excel(name = "批次id,关联t_student_batch表主键")
    private Long batchId;

    /** 题库类型id，关联t_course_bank_type表主键 */
    private Long courseBankTypeId;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 到期时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lineDate;

    /** 学员缴费单价 */
    private BigDecimal unitPayPrice;

    /** 微信openId */
    private String openId;

    /** 所属企业id,关联sys_user表的主键 */
    @Excel(name = "所属企业id,关联sys_user表的主键")
    private Long entId;

    /** 所属机构id,关联sys_user表 */
    @Excel(name = "所属机构id,关联sys_user表")
    private Long insId;

    /** 状态 1未审核 2已通过 3已过期 */
    @Excel(name = "状态 1未审核 2已通过 3已过期 4禁用")
    private String status;

    /** 备注 */
    private String remark;

    /** 身份证号码 */
    @TableField(exist = false)
    private String idCard;

    /** 身份证号码 */
    @TableField(exist = false)
    private String studentIdCard;

    /** 学员名称 */
    @TableField(exist = false)
    private String studentName;

    /** 状态列表 */
    @TableField(exist = false)
    private List<String> statusList;

    @Override
    @NotNull(message = "唯一主键不能为空", groups = {VEdit.class})
    public Long getId() {
        return super.getId();
    }
}
